package com.cskaoyan.javase.oop2.final9.clazz1;

/**
 * @description: final修饰类
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * final有最终的 最后的意思
 * final类就是 最终的类
 * final修饰类 表示该类无法被继承
 * final修饰的类 除了无法被继承以外，和普通类没有任何区别，该咋用咋用 相当于给这个类做了绝育手术 绝后了
 *
 * 思考：什么样的类需要被final修饰？什么样的类不用被继承？继承有啥好处？
 * 不希望该类的成员被复用，并且这个类的功能已经足够强大，再也不需要子类去扩展它了
 * 于是你把这个类用final修饰，这样能够保证绝对安全，因为它没有子类了
 *
 * 常见的final类
 * - String
 * - System
 * - Math 数学工具类
 * - 所有基本数据类型的包装类和一个Void
 *   - Boolean，Character，Short，Integer，Long，Float，Double，Byte，Void
 *
 * 总结：除非你特别确信这个类不需要被继承，否则不要滥用final修饰类
 * 一般情况下，不需要自己把类设置成final
 *
 */
public class Demo {
    public static void main(String[] args) {
        Father f = new Father();
        System.out.println(f.a);
        f.test();
    }
}

final class Father {
    int a = 3;

    public void test() {
        System.out.println("1111");
    }
}
//class Son extends Father{
//    //Cannot inherit from final 'com.cskaoyan.javase.oop2.final9.clazz1.Father' 无法继承一个final修饰的类
//}
